package com.xtwy.admin.web.config.redis;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
import org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration;
import org.springframework.cache.CacheManager;
import org.springframework.cache.annotation.CachingConfigurerSupport;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.cache.RedisCacheConfiguration;
import org.springframework.data.redis.cache.RedisCacheWriter;
import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.JdkSerializationRedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;

/**
 * 类的描述：
 * Redis 配置
 * @作者: 侯建军
 * @邮箱: 474177818@qq.com
 * @博客: https://blog.csdn.net/marquis888
 * @创建日期: 2018年11月18日  13:41
 * @版本: v1.0
 * @jdk版本使用: JDK1.8
 */
//@Configuration
//@EnableCaching
//@AutoConfigureAfter(RedisAutoConfiguration.class)
//public class RedisConfiguration extends CachingConfigurerSupport{
//
//    private Logger logger = LoggerFactory.getLogger(this.getClass());
//
//    @Value("${shiro.session.session-prefix}")
//    private String sessionPrefix;
//
//    @Value("${shiro.session.session-time}")
//    private int sessionTime;
//
//    @Value("${shiro.cache.cache-prefix}")
//    private String cachePrefix;
//
//    @Value("${shiro.cache.cache-time}")
//    private int cacheTime;
//
//    @Bean
//    public CacheManager cacheManager(LettuceConnectionFactory redisConnectionFactory) {
//        logger.info("cacheManager注入成功！！");
//        RedisCacheConfiguration redisCacheConfiguration = RedisCacheConfiguration.defaultCacheConfig();
//        RedisCacheWriter redisCacheWriter = RedisCacheWriter.nonLockingRedisCacheWriter(redisConnectionFactory);
//        org.springframework.data.redis.cache.RedisCacheManager redisCacheManager = new org.springframework.data.redis.cache.RedisCacheManager(redisCacheWriter, redisCacheConfiguration);
//        return redisCacheManager;
//    }
//
//    @Bean(name = "redisTemplate")
//    public RedisTemplate<String, Object> getRedisTemplate(LettuceConnectionFactory redisConnectionFactory) {
//        logger.info("redisTemplatet注入成功！！");
//        RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
//        redisTemplate.setKeySerializer(new StringRedisSerializer());
//        redisTemplate.setValueSerializer(new JdkSerializationRedisSerializer());
//        redisTemplate.setHashKeySerializer(new StringRedisSerializer());
//        redisTemplate.setHashValueSerializer(new Jackson2JsonRedisSerializer(Object.class));
//        redisTemplate.setConnectionFactory(redisConnectionFactory);
//        return redisTemplate;
//    }
//
//    public String getSessionPrefix() {
//        return sessionPrefix;
//    }
//
//    public void setSessionPrefix(String sessionPrefix) {
//        this.sessionPrefix = sessionPrefix;
//    }
//
//    public String getCachePrefix() {
//        return cachePrefix;
//    }
//
//    public void setCachePrefix(String cachePrefix) {
//        this.cachePrefix = cachePrefix;
//    }
//
//    public int getSessionTime() {
//        return sessionTime;
//    }
//
//    public void setSessionTime(int sessionTime) {
//        this.sessionTime = sessionTime;
//    }
//
//    public int getCacheTime() {
//        return cacheTime;
//    }
//
//    public void setCacheTime(int cacheTime) {
//        this.cacheTime = cacheTime;
//    }
//}
